package com.kurt.repository;

import com.kurt.entity.SysDictType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 数据字典类型Repository接口
 * 提供数据字典类型数据访问方法
 */
@Repository
public interface SysDictTypeRepository extends JpaRepository<SysDictType, Long>, JpaSpecificationExecutor<SysDictType> {

    /**
     * 根据字典类型查找字典类型
     *
     * @param dictType 字典类型
     * @return 字典类型信息
     */
    Optional<SysDictType> findByDictType(String dictType);

    /**
     * 根据字典名称模糊查询
     *
     * @param dictName 字典名称
     * @return 字典类型列表
     */
    List<SysDictType> findByDictNameContaining(String dictName);

    /**
     * 根据状态查找字典类型
     *
     * @param status 状态
     * @return 字典类型列表
     */
    List<SysDictType> findByStatus(Integer status);

    /**
     * 检查字典类型是否存在
     *
     * @param dictType 字典类型
     * @return 是否存在
     */
    boolean existsByDictType(String dictType);

    /**
     * 检查字典类型是否存在（排除指定ID）
     *
     * @param dictType  字典类型
     * @param excludeId 排除的ID
     * @return 是否存在
     */
    boolean existsByDictTypeAndIdNot(String dictType, Long excludeId);

}
